package game.model.request;

import com.google.common.collect.Lists;
import common.model.po.GLandform;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author 米泽鹏
 * @since 2022-3-5 下午 12:26
 */
@Data
public class SaveBuildingRequest {

	/**
	 * 建筑主键
	 */
	private Long id;

	/**
	 * 建筑名称
	 */
	@NotBlank(message = "建筑名称不能为空")
	private String buildingName;

	/**
	 * 建筑描述
	 */
	@NotBlank(message = "建筑描述不能为空")
	private String description;

	/**
	 * 同级中的排序
	 */
	@NotNull(message = "同级排序不能为空")
	private Integer sort;

	/**
	 * 自定义排序
	 */
	@NotNull(message = "自定义排序不能为空")
	private Integer customSort;

	/**
	 * 类别id
	 */
	@NotNull(message = "类别id不能为空")
	private Long classificationId;

	/**
	 * 传送带入口数量
	 */
	@NotNull(message = "传送带入口数量不能为空")
	private Integer beltEntrancesCount;

	/**
	 * 管道入口数量
	 */
	@NotNull(message = "管道入口数量不能为空")
	private Integer pipeInletsCount;

	/**
	 * 传送带出口数量
	 */
	@NotNull(message = "传送带出口数量不能为空")
	private Integer beltOutletsCount;

	/**
	 * 管道出口数量
	 */
	@NotNull(message = "管道出口数量不能为空")
	private Integer pipeOutletsCount;

	/**
	 * 无区别管道口数量
	 */
	@NotNull(message = "无区别管道口数量不能为空")
	private Integer pipeHoleCount;

	/**
	 * 是否为产能建筑：0-否	1-是
	 */
	@NotNull(message = "是否为产能建筑不能为空")
	private Integer productive;

	/**
	 * 是否需要供电：0-否	1-是
	 */
	@NotNull(message = "是否需要供电不能为空")
	private Integer needPower;

	/**
	 * 功率（MW）
	 */
	private BigDecimal power;

	/**
	 * 能否超频：	0-不能	1-能
	 */
	@NotNull(message = "能否超频不能为空")
	private Integer overclockable;

	/**
	 * 是否是载具：	0-否	1-是
	 */
	@NotNull(message = "是否是载具不能为空")
	private Integer isVehicle;

	/**
	 * 是否需要特定地貌才能建造：	0-不需要	1-需要
	 */
	@NotNull(message = "地貌要求不能为空")
	private Integer isRequireLandform;

	/**
	 * 是否需要特定地貌才能建造：	0-不需要	1-需要
	 */
	@NotNull(message = "地貌要求不能为空")
	private List<GLandform> landformList = Lists.newArrayList();

	/**
	 * 图片地址
	 */
	private String image;

	/**
	 * 创建时间
	 */
	private Date createTime;

	/**
	 * 更新时间
	 */
	private Date updateTime;

}
